Modern computer programs can provide a complex graphical user interface (GUI) that may be formed from one or more plug-ins. Generally, a plug-in refers to a computer program that interacts with a host computer program to provide a particular function. In some instances, a plug-in executes cooperatively with the host computer program, but need not execute within an execution environment or framework provided by the host computer program. In other cases, the plug-in does execute within an execution environment provided by the host computer program.
For example, a GUI for an electronic design automation (EDA) computer program may utilize one plug-in to provide users with the ability to edit text documents and another plug-in to provide users with the ability to edit schematic diagrams of circuits. Plug-ins also are utilized within Internet browsers and electronic mail clients to expand functionality of the host computer program. Within browsers, for example, plug-ins are used to play particular types of digital content or files.
A plug-in typically is executed as a binary file at startup of the host computer program. Once the plug-in is executing, the plug-in can provide different visual elements that may be integrated into the GUI of the host computer program. These visual elements can include menus items, toolbar buttons, preference controls, or the like. Accordingly, a plug-in must be executed, and therefore loaded into memory of the computer system executing the host computer program (host computer system), for visual elements of the plug-in to be incorporated or displayed within the GUI of the host computer program. Thus, whether or not the functionality provided by the plug-in is utilized within the host computer program, the plug-in still consumes memory of the host computer system. Depending upon the number and complexity of the plug-ins within the host computer program, the amount of memory of the host computer system consumed by the plug-ins may be significant.
In addition, the process of loading and initializing each plug-in within the host computer program requires time. This increases the amount of time needed for the host computer program to finish loading and initialization, thereby increasing the amount of time that a user must wait prior to using the host computer program after launch.
In other cases, the plug-in may not be loaded until such time that the plug-in is needed. For example, when opening a particular type of file within a browser, the plug-in may not be executed until such time that a request to open or otherwise process the type of file handled by the plug-in is issued. Still, because the plug-in is not executing, controls, settings, and other visual elements of the plug-in are not displayed within the GUI of the host computer program and are, therefore, not available to the user until the plug-in is executed. There is no visual integration of the controls or settings, for example, of the plug-in within the GUI of the host computer program until the plug-in is executed.